;Exam2016H28H ݖP Ɣ }폜.txt
MAIN START
;--}FSԖڂ̃f[^Ƃ#0444}B
    LAD GR0,#0444 ; f[^
    LAD GR1,ROOT
    LAD GR2,4
    LAD GR3,0 ;}
    CALL LPROC
;--폜F3Ԗڂ̃f[^폜B
    LAD GR1,ROOT
    LAD GR2,3 ; n=3 Ԗڂ폜B
    LAD GR3,1 ;폜
    CALL LPROC
    ;LAD GR1,LP ;fobOp
    RET
ROOT DC DATA
DATA DC DATB
    DC #0AAA
DATB DC DATC
    DC #0BBB
DATC DC DATD
    DC #0CCC
DATD DC DATE
    DC #0DDD
DATE DC DATFIN
    DC #0EEE
DATFIN DC #0000
    DC #0000
    END
;--------------
LPROC START
    RPUSH
    LD GR4,GR2  ;GR4 <-- n
LP LD GR2,0,GR1 ;̗vfǂ
    JZE FIN    ; n > N ?
    SUBA GR4,=1
    JZE NEXT   ;vf NɒBH
    LD GR1,GR2 ;aG ̃f[^̃AhX
    JUMP LP
    ;LAD GR7,DATA ;fobOp
    ;---------------
NEXT LD GR3,LTBL,GR3
    JUMP 0,GR3 ;w肳ꂽփWv
LINS LD GR4,GR2
    CALL EGET ;GR2<--}vf̐擪AhXԂ
    ST GR2,0,GR1 ;bE
    ST GR4,0,GR2 ;}vf̂Pڂݒ
    ST GR0,1,GR2
    JUMP FIN
    ;----------------------
LDEL LD GR4,0,GR2 ;GR4<--vf n+1̐擪AhX
    ST GR4,0,GR1 ;vfn-1̂PڂĐݒ
    CALL EFREE   ;폜ꂽvfn̗̈
FIN RPOP
    RET
LTBL DC LINS ;̕AhXe[u
    DC LDEL
    END
;----------------
EGET START
    RPUSH
    LAD GR1,EXDAT
    LAD GR3,0
LOOP LD GR4,EXDAT,GR3
    JZE EXIT
    SUBL GR4,=#FFFF
    JZE SPARI
    LAD GR3,2,GR3
    JUMP    LOOP
SPARI LAD GR2,EXDAT,GR3
    ST GR2,RETGR2
    RPOP
    LD GR2,RETGR2
    ;LAD GR7,LINS
EXIT    RET
RETGR2 DS 1
;LǗ̈
EXDAT DC #FFF0
    DC 0
    DC #FFFF
    DC 0
    DC #FFFF
    DC 0
    DC #FFFF
    DC 0
    DC #FFFF
    DC 0
    DC #FFFF
    DC 0
    DC #FFFF
    DC 0
    END
;------------------
;폜vf̃AhXGR2ɓEFREEĂ΂B
;폜vf̐擪AhX#FFFFi[ĉB
EFREE START
    LAD GR0,#FFFF
    ST GR0,0,GR2
    RET
    END
;----------
